package com.iswoak.netctoss.service.impl;

import java.util.Arrays;
import java.util.List;

import javax.annotation.Resource;

import com.iswoak.netctoss.dao.RoleInfoDao;
import com.iswoak.netctoss.dao.RoleModuleDao;
import com.iswoak.netctoss.dao.impl.RoleInfoDaoImpl;
import com.iswoak.netctoss.dao.impl.RoleModuleDaoImpl;
import com.iswoak.netctoss.entity.RoleInfo;
import com.iswoak.netctoss.entity.RoleInfoVo;
import com.iswoak.netctoss.entity.RoleModule;
import com.iswoak.netctoss.service.RoleInfoService;
import com.iswoak.netctoss.util.PageUtil;

public class RoleInfoServiceImpl implements RoleInfoService{
	
	private RoleInfoDao roleInfoDao = new RoleInfoDaoImpl();
	private RoleModuleDao roleModuleDao = new RoleModuleDaoImpl();
	/**
	 * 分页查询
	 */
	public PageUtil<RoleInfoVo> page(Integer currPage,Integer pageSize) {
		//根据条件进行 条件分页查询
		List<RoleInfoVo> list= roleInfoDao.page((currPage-1)*pageSize, pageSize);//roleInfoDao.page(roleInfoVo, (currPage-1)*pageSize, pageSize);
		//把所有分页的数据封装到page对象中
		PageUtil<RoleInfoVo> page= new PageUtil<RoleInfoVo>(currPage, pageSize, roleInfoDao.count(), list);
		return page;
	}
	
	/**
	 * 新增角色
	 */
	public void add(String roleName, Integer[] moduleIds) {

		RoleInfo roleInfo=new RoleInfo(null, roleName);
		//先执行增加一个roleInfo
		//增加一个role，返回role_id
		int roleId = roleInfoDao.add(roleInfo);
		System.out.println(Arrays.toString(moduleIds));
		//遍历moduleIds循环增加role_module
		for(Integer moduleId : moduleIds){
			roleModuleDao.add(new RoleModule(roleId,moduleId));
		}
	
	}
	
	@Override
	public RoleInfoVo findByRoleId(Integer roleId) {
		return roleInfoDao.findByRoleId(roleId);
	}
	
	@Override
	public void update(RoleInfo roleInfo, Integer[] moduleIds) {
		//先修改role_info表的内容
		roleInfoDao.update(roleInfo);
		//再修改role_module的信息  先根据role_id删除
		roleModuleDao.deleteByRoleId(roleInfo.getRoleId());
		//再增加
		for(Integer moduleId : moduleIds){
			roleModuleDao.add(new RoleModule(roleInfo.getRoleId(), moduleId));
		}
		
	}
	@Override
	public void remove(Integer roleId) {}
	
	/**
	 * 根据角色名查询
	 */
	public RoleInfo findByRoleName(String roleName,String roleId) {
		return roleInfoDao.findByRoleName(roleName, roleId);
	}
	
}
